2012/07/27

Recent entries from same category

  1. RapidJSON や simdjson よりも速いC言語から使えるJSONライブラリ「yyjson」
  2. コメントも扱える高機能な C++ 向け JSON パーサ「jsoncpp」
  3. C++ で flask ライクなウェブサーバ「clask」書いた。
  4. C++ 用 SQLite3 ORM 「sqlite_orm」が便利。
  5. zsh で PATH に相対パスを含んだ場合にコマンドが補完できないのは意図的かどうか。

プログラム中に HTML とか埋め込むためのテンプレートエンジン picotemplate を作った件 - kazuhoのメモ置き場

たとえばドキュメント生成ツールなんかを作ってると、HTML をプログラムの中で生成したい!ってことは良くあると思います。でも、そのためにいちいちテンプレートエンジンを使うのは大げさな場合も多いですよね。たとえば、ちょっとリストを出力するとき。以下のような感じのコードを書いたことがある人は多いと思います。

http://d.hatena.ne.jp/kazuhooku/20120726/1343290960
例えばこんなのどうだろう
#include <string>
#include <list>
#include <iostream>

#define _(...) std::string(#__VA_ARGS__)

int
main() {
  std::list<std::string> list = {
    "foo""bar""baz"
  };

  std::string code = _( <ul class="mylist">\n );
  for (auto i = list.begin(); i != list.end(); ++i) {
    code += _( <li class="mylist-item"> ) + *i + _( </li>\n );
  }
  code += _( </ul> ); 

  std::cout << code << std::endl;
}
出力結果
<ul class="mylist">
<li class="mylist-item">foo</li>
<li class="mylist-item">bar</li>
<li class="mylist-item">baz</li>
</ul>
いや、エスケープとか全く考えてないけどね。

Posted at by